package com.ys.erp.common.util;

import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;

/**
 * @author lwj
 * @date 2023/4/9
 */
public class MoneyUtil {

    public static String long2Str(Long m) {
        if (ObjectUtils.isEmpty(m)) {
            return "0.00";
        }
        return String.valueOf(new BigDecimal(m).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP).toString());
    }

    public static Long str2Long(String str) {
        if (ObjectUtils.isEmpty(str)) {
            return 0L;
        }
        long l = new BigDecimal(str).multiply(new BigDecimal("100")).longValue();
        if (l < 0) {
            return 0L;
        }
        return l;
    }


    public static Integer long2Str1(String m) {
        if (StringUtils.isBlank(m)) {
            return 0;
        }
        return new BigDecimal(m).divide(
                new BigDecimal("100"), 0, RoundingMode.DOWN).intValue();
    }
    public static Long str2LongMultiply100(String str) {
        if (ObjectUtils.isEmpty(str)) {
            return 0L;
        }
        return new BigDecimal(str).multiply(new BigDecimal("100")).longValue();

    }

    // 封装计算占比并保留两位小数的方法
    public static double calculateRate(List<Double> list) {
        if (list == null || list.isEmpty()) {
            return 0;
        }
        // 计算总和
        double sum = list.stream().mapToDouble(it -> it).sum();
        // 计算平均值
        double average = sum / list.size();

        // 使用 BigDecimal 保留两位小数
        return new BigDecimal(average).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    }


}
